/*
 * ABMCorpino.cpp
 *
 */

#include "ABMCorpino.h"

ABMCorpino::ABMCorpino(std::string nArchivo, unsigned int tamanioBucket) {
	this->nArchivo = nArchivo;
	this->tamanioBucket = tamanioBucket;
	arbolCorpino = new Indice(nArchivo, tamanioBucket);

}

ABMCorpino::~ABMCorpino() {

}

bool ABMCorpino::alta(unsigned int id, string descripcion, bool contorno,
		int precio, int idMaterial, int idBretel, int idCopa, int idFamilia,
		int idTintura) {
	string valor = descripcion + ";" + Util::intToString(contorno) + ";"
				+ Util::intToString(precio) + ";" + Util::intToString(idMaterial)
				+ ";" + Util::intToString(idBretel) + ";"
				+ Util::intToString(idCopa) + ";" + Util::intToString(idFamilia)
				+ ";"
				+ Util::intToString(idTintura);
	ElementoHoja elemento(id, valor);
	return ((arbolCorpino->alta(elemento)) != -1);
}

bool ABMCorpino::baja(unsigned int id) {
	return ((arbolCorpino->baja(id)) != -1);
}

bool ABMCorpino::modificacion(unsigned int id, string descripcion,
		bool contorno, int precio, int idMaterial, int idBretel, int idCopa,
		int idFamilia,int idTintura) {
	string valor = descripcion + ";" + Util::intToString(contorno) + ";"
			+ Util::intToString(precio) + ";" + Util::intToString(idMaterial)
			+ ";" + Util::intToString(idBretel) + ";"
			+ Util::intToString(idCopa) + ";" + Util::intToString(idFamilia)
			+ ";"
			+ Util::intToString(idTintura);
	ElementoHoja elemento(id, valor);
	return ((arbolCorpino->modificar(elemento)) != -1);
}

/*si lo encuentra devuelve el valor de Key con los atributos separados por ; */

string ABMCorpino::buscar(unsigned int id) {
	ElementoHoja elemH= arbolCorpino->buscarElemento(id);
	if (elemH.clave !=- 1) {
		return Util::intToString(id) + ";" + elemH.valor;
	} else {
		return "";
	}
}

vector<string> ABMCorpino::listar() {
	vector<ElementoHoja> elementos = arbolCorpino->recorreOrdenado();
	vector<string> resultado;
	for (int i = 0; i < elementos.size(); i++) {
		string valorVector = Util::uIntToString(elementos.at(i).clave) + ";"
				+ (elementos.at(i).valor);
		resultado.push_back(valorVector);
	}
	return resultado;
}

